home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / equel / nalloc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1984-12-31  |  1.2 KB  |  85 lines

  1. # include    <sccs.h>
  2.  
  3. SCCSID(@(#)nalloc.c    8.1    12/31/84)
  4.  
  5.  
  6. /*
  7. **    NALLOC --
  8. **        Dynamic allocation routine which
  9. **         merely calls alloc(III), returning 
  10. **        0 if no core and a pointer otherwise.
  11. **
  12. */
  13.  
  14. char *nalloc(s)
  15. int    s;
  16. {
  17. #    ifdef PDP11
  18.     unsigned    size;
  19.  
  20.     size = s;
  21.     size = alloc(size);
  22.     if (size == -1)
  23.         return (0);
  24.     return (size);
  25.  
  26. #    else
  27.     extern char    *malloc();
  28.  
  29.     return (malloc(s));
  30. #    endif
  31. }
  32. /*
  33. **    SALLOC -- allocate
  34. **        place for string and initialize it,
  35. **        return string or 0 if no core.
  36. **
  37. */
  38.  
  39. char *salloc(s)
  40. char        *s;
  41. {
  42.     register unsigned    i;
  43.     register char        *string;
  44.     char            *malloc();
  45.  
  46.     string = s;
  47. #    ifdef PDP11
  48.     i = alloc(length(string) + 1);
  49.     if (i == -1)
  50.         return (0);
  51. #    else
  52.     i = (unsigned)malloc(length(string) + 1);
  53. #    endif
  54.  
  55.     if (i)
  56.         smove(string, i);
  57.     return ((char *)i);
  58. }
  59.  
  60. /*
  61. **    XFREE -- Free possibly dynamic storage
  62. **        checking if its in the heap first.
  63. **
  64. **        0 - freed
  65. **        1 - not in heap
  66. **
  67. */
  68.  
  69. xfree(cp)
  70. char        *cp;
  71. {
  72.     extern             end;    /* break (II) */
  73.     register char        *lcp, *lend, *lacp;
  74.  
  75.     lcp = cp;
  76.     lacp = (char *)&cp;
  77.     lend = (char *)&end;
  78.     if (lcp >= lend && lcp < lacp)    /* make sure its in heap */
  79.     {
  80.         free(lcp);
  81.         return (0);
  82.     }
  83.     return (1);
  84. }
  85.